/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.tesoreria.beans;

import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.EJB;
import javax.faces.model.SelectItem;
import org.cip.esymons.general.bc.ColegiadoEspecialidadFacadeLocal;
import org.cip.esymons.general.bc.DireccionPersonaFacadeLocal;
import org.cip.esymons.general.be.ColegiadoEspecialidad;
import org.cip.esymons.general.be.PersonaJuridica;
import org.cip.esymons.general.be.PersonaNatural;
import org.cip.esymons.general.util.ControladorAbstracto;
import org.cip.esymons.general.util.FormatoExportacion;
import org.cip.esymons.general.util.Reporteador;
import org.cip.esymons.tesoreria.adapters.AdaptadorDeudaMovimientoAnual;
import org.cip.esymons.tesoreria.adapters.AdaptadorDeudaMovimientoCuentaIngreso;
import org.cip.esymons.tesoreria.adapters.CuotaMensual;
import org.cip.esymons.tesoreria.adapters.CuotasPorAnio;
import org.cip.esymons.tesoreria.adapters.DeudaAnual;
import org.cip.esymons.tesoreria.adapters.DeudaAnualInterfaz;
import org.cip.esymons.tesoreria.adapters.DeudaCuentaIngreso;
import org.cip.esymons.tesoreria.adapters.DeudaCuentaIngresoInterfaz;
import org.cip.esymons.tesoreria.adapters.DeudaMovimiento;
import org.cip.esymons.tesoreria.bc.CobroPlanillaDelegate;
import org.cip.esymons.tesoreria.bc.ColegiadoDelegate;
import org.cip.esymons.tesoreria.bc.DetCobroPlanillaDelegate;
import org.cip.esymons.tesoreria.bc.DocumentoPagoFacadeLocal;
import org.cip.esymons.tesoreria.bc.EjecutarPagoDelegate;
import org.cip.esymons.tesoreria.bc.MovimientoCuentaFacadeLocal;
import org.cip.esymons.tesoreria.bc.MovimientoPlanillaDelegate;
import org.cip.esymons.tesoreria.bc.PersonaJuridicaDelegate;
import org.cip.esymons.tesoreria.bc.TipoMonedaFacadeLocal;
import org.cip.esymons.tesoreria.be.CobroPlanilla;
import org.cip.esymons.tesoreria.be.DetCobroPlanilla;
import org.cip.esymons.tesoreria.be.DetPagoAgrupado;
import org.cip.esymons.tesoreria.be.DocumentoPago;
import org.cip.esymons.tesoreria.be.EnumEstadoCobroPlanilla;
import org.cip.esymons.tesoreria.be.EnumMeses;
import org.cip.esymons.tesoreria.be.EnumTipoDeuda;
import org.cip.esymons.tesoreria.be.EnumTipoRegimen;
import org.cip.esymons.tesoreria.be.MovimientoCuenta;
import org.cip.esymons.tesoreria.be.MovimientoPlanilla;
import org.cip.esymons.tramite.bc.TipoDocumentoFacadeLocal;

/**
 *
 * @author Ingrid
 */
public class CobroPlanillaController {

    @EJB
    MovimientoCuentaFacadeLocal movimientoCuentaFacadeLocal;
    @EJB
    TipoDocumentoFacadeLocal tipoDocumentoFacadeLocal;
    @EJB
    TipoMonedaFacadeLocal tipoMonedaFacadeLocal;
    @EJB
    DocumentoPagoFacadeLocal documentoPagoFacadeLocal;
    @EJB
    DireccionPersonaFacadeLocal direccionPersonaFacadeLocal;
    @EJB
    ColegiadoEspecialidadFacadeLocal colegiadoEspecialidadFacadeLocal;
    private EjecutarPagoDelegate ejecutarPagoDelegate;
    private CobroPlanillaDelegate delegado;
    private CobroPlanilla cobroPlanilla;
    private DetCobroPlanillaDelegate delegadoCobroPlanilla;
    private MovimientoPlanillaDelegate delegadoMovimientoPlanilla;
    private String nombrePersonaJuridica;
    private PersonaJuridicaDelegate delegadoPersonaJuridica;
    private PersonaJuridica personaJuridica;
    private List<CobroPlanilla> listaCobroPlanillas;
    private List<CobroPlanilla> listaTodosLosColegiados;
    private boolean swAgregar = false;
    private boolean swAdicionar = false;
    private ColegiadoDelegate delegadoColegiado;
    private int tipoBusqueda;
    private String dniOCip;
    private String codigoUsaEmpresa;
    private String descripcionUsaEmpresa;
    private List<CobroPlanilla> listaTodosLosColegiadosParaReporte;
    private DetCobroPlanilla detCobroPlanilla;
    private DeudaMovimiento deudaMovimientoParaCuotas = new DeudaMovimiento();
    private DeudaMovimiento deudaMovimientoParaFraccioanamiento = new DeudaMovimiento();
    private DeudaMovimiento deudaMovimientoParaMultas = new DeudaMovimiento();
    private DeudaCuentaIngreso deudaCuentaIngresoParaFraccionamiento = new DeudaCuentaIngreso();
    private DeudaCuentaIngreso deudaCuentaIngresoParaMultas = new DeudaCuentaIngreso();
    private DeudaAnual deudaAnual = new DeudaAnual();
    private int anioPago;
    private EnumMeses mesPago;
    private ColegiadoEspecialidad especialidadYcapituloColegiado;

    public CobroPlanillaController() {
        ejecutarPagoDelegate = new EjecutarPagoDelegate();
        delegado = new CobroPlanillaDelegate();
        delegadoPersonaJuridica = new PersonaJuridicaDelegate();
        delegadoColegiado = new ColegiadoDelegate();
        delegadoCobroPlanilla = new DetCobroPlanillaDelegate();
        delegadoMovimientoPlanilla = new MovimientoPlanillaDelegate();
    }

    public String nuevo() {
        nombrePersonaJuridica = null;
        listaCobroPlanillas = new ArrayList<CobroPlanilla>();
        cobroPlanilla = new CobroPlanilla();
        return "nuevo";
    }

    public String verColegiadosRelacionados() {
        listaTodosLosColegiados = new ArrayList();
        listaTodosLosColegiados = delegado.colegiadosActivosYCesantes(personaJuridica);
        return "ver_colegiados";
    }

    public String regresarVerColegiadosRelacionados() {
        listaTodosLosColegiados = new ArrayList();
        listaTodosLosColegiados = delegado.colegiadosActivosYCesantes(personaJuridica);
        return "pageColegiadosDeEmpresa";
    }

    public String reporteCobroCuotasPlanilla() throws SQLException {
        listaTodosLosColegiadosParaReporte = new ArrayList();
        listaTodosLosColegiadosParaReporte = delegado.colegiadosActivosYCesantes(personaJuridica);
        if (listaTodosLosColegiadosParaReporte != null) {
            if (listaTodosLosColegiadosParaReporte.size() > 0) {
                Reporteador reporteador = new Reporteador();
                reporteador.exportarReporte("rptCobroPlanilla", FormatoExportacion.excel, listaTodosLosColegiadosParaReporte, null);
            } else {
                ControladorAbstracto.warn("No se puede Mostrar Reporte porque la planilla no tiene ningún Colegiado");
            }
        } else {
            ControladorAbstracto.error("No se puede Mostrar el Reporte");
        }
        return null;
    }

    public String buscar() {
        if (tipoBusqueda == 0) {
            cobroPlanilla.setColegiado(delegadoColegiado.buscaColegiadoPorCIP(dniOCip));
        } else {
            cobroPlanilla.setColegiado(delegadoColegiado.buscarColegiadoXDni(dniOCip));
        }
        return null;
    }

    public String seleccionarColegiado() {
        if (cobroPlanilla.getColegiado() != null) {
            if (swAgregar == true && swAdicionar == false) {
                listaCobroPlanillas.add(cobroPlanilla);
                swAgregar = false;
                return "nuevo";
            } else if (swAdicionar == true && swAgregar == false) {
                boolean puedeAdicionarseCole = false;
                for (CobroPlanilla cp : listaTodosLosColegiados) {
                    if (!cp.getColegiado().equals(cobroPlanilla.getColegiado())) {
                        puedeAdicionarseCole = true;
                    }
                }
                if (puedeAdicionarseCole == true) {
                    listaTodosLosColegiados.add(cobroPlanilla);
                    swAdicionar = false;
                    return "pageColegiadosDeEmpresa";
                } else {
                    ControladorAbstracto.info("El Colegiado a adicionar ya está en la Planilla.");
                    return null;
                }
            }
            return null;
        } else {
            ControladorAbstracto.error("Debe ingresar un Colegiado");
            return null;
        }


    }

    public String realizarPago() {
        ejecutarPagoDelegate.init();
        SimpleDateFormat sd = new SimpleDateFormat("yyyy");
        anioPago = Integer.parseInt(sd.format(new Date()));
        return "realizarPago";
    }

    public String actualizarPlanilla() {
        for (CobroPlanilla cobro : listaTodosLosColegiados) {
            boolean existeCobro = false;
            CobroPlanilla resBus = delegado.find(cobro.getCodigo());
            if (resBus != null) {
                existeCobro = true;
            }
            if (existeCobro) {
                delegado.edit(cobro);
            } else {
                cobro.setEmpresaOInstitucion(personaJuridica);
                delegado.create(cobro);
            }
        }
        ControladorAbstracto.info("Se actualizó exitosamente la Planilla de la Empresa.");
        return null;
    }

    public String cancelar() {
        cobroPlanilla = null;
        nombrePersonaJuridica = null;
        listaCobroPlanillas = null;
        ControladorAbstracto.info("El usuario ha cancelado la acción");
        return "buscar";
    }

    public String grabar() {
        try {
            if (listaCobroPlanillas.isEmpty()) {
                ControladorAbstracto.error("Debe Ingresar al menos un Colegiado.");
                return null;
            } else {
                if (personaJuridica != null) {
                    for (CobroPlanilla cobroPlanillaLocal : listaCobroPlanillas) {
                        cobroPlanillaLocal.setCodigoUsaEmpresa(codigoUsaEmpresa);
                        cobroPlanillaLocal.setDescripcionUsaEmpresa(descripcionUsaEmpresa);
                        cobroPlanillaLocal.setEmpresaOInstitucion(personaJuridica);
                        cobroPlanillaLocal.setFechaInscripcion(new Date());
                        delegado.create(cobroPlanillaLocal);
                    }
                } else {
                    ControladorAbstracto.error("Debe Ingresar una Empresa.");
                    return null;
                }

                nombrePersonaJuridica = null;
                listaCobroPlanillas = null;
                ControladorAbstracto.info("Inserción Satisfactoria");
                return "buscar";
            }
        } catch (Exception ex) {
            ControladorAbstracto.error("Sucedió un error al insertar:" + ex.getMessage());
            return null;
        }
    }

    public String actualizar() {
        try {
            delegado.edit(cobroPlanilla);
            listaCobroPlanillas = null;
            ControladorAbstracto.info("Actualización Satisfactoria");
            return "buscar";
        } catch (Exception ex) {
            ControladorAbstracto.error("Sucedió un error al actualizar:" + ex.getMessage());
            return null;
        }
    }

    public String agregarColegiado() {
        if (personaJuridica != null) {
            if (delegado.colegiadosActivosYCesantes(personaJuridica).size() > 0) {
                ControladorAbstracto.warn("Esta persona juridica ya tiene un padron registrado.Cambiela.");
                return null;
            }
        }
        cobroPlanilla = new CobroPlanilla();
        swAgregar = true;
        return "agregarColegiado";
    }

    public String adicionarColegiado() {
        cobroPlanilla = new CobroPlanilla();
        cobroPlanilla.setFechaInscripcion(new Date());
        swAdicionar = true;
        return "pageAgregarColegiado";
    }

    public List<PersonaJuridica> autocompletarPersonasJuridicas(Object event) {
        List<PersonaJuridica> lista = new ArrayList();
        String cond = event.toString().toUpperCase();
        try {
            lista = delegadoPersonaJuridica.listaPJuridicasXCond(cond);
        } catch (Exception ex) {
            ControladorAbstracto.error("Error al obtener Personas Juridicas:" + ex.getMessage());
        } finally {
            return lista;
        }
    }

    public SelectItem[] getListaTipoRegimen() {
        try {
            SelectItem[] select = new SelectItem[EnumTipoRegimen.values().length];
            int cont = 0;
            for (EnumTipoRegimen enumTipoRegimen : EnumTipoRegimen.values()) {
                SelectItem item = new SelectItem(enumTipoRegimen, enumTipoRegimen.name());
                select[cont] = item;
                cont++;
            }
            return select;
        } catch (Exception e) {
            SelectItem[] select = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen Tipos de Regimens");
            select[0] = item;
            return select;
        }
    }

    public String realizarPagosPorPlanilla() {
        List<DetCobroPlanilla> lista = delegado.listaPagosXCobroPlanilla(mesPago, anioPago);
        if (lista.size() > 0) {
            List<DocumentoPago> listaDocumentoPagos = ejecutarPagoDelegate.getRealizarPago().realizarPagoCobroPlanilla(mesPago, anioPago);
            for (DocumentoPago dp : listaDocumentoPagos) {
                try {
                    dp.setListaDetPagoAgrupados(documentoPagoFacadeLocal.buscarDetalleDocumento(dp.getDocCodigo()));
                    Collections.sort(dp.getListaDetPagoAgrupados(), new Comparator<DetPagoAgrupado>() {

                        @Override
                        public int compare(DetPagoAgrupado o1, DetPagoAgrupado o2) {
                            if (o1.getCuentaIngreso() == null || o2.getCuentaIngreso() == null) {
                                return 0;
                            } else {
                                return Integer.valueOf(o1.getCuentaIngreso().getCinCodigo()) - Integer.valueOf(o2.getCuentaIngreso().getCinCodigo());
                            }

                        }
                    });
                } catch (Exception ex) {
                    System.out.println(ex.getMessage());
                }
            }
            ejecutarPagoDelegate.getRealizarPago().cancelar();
            reporteAgrupado(listaDocumentoPagos);
        } else {
            ControladorAbstracto.warn("Ya se realizó la cobranza para este mes.Seleccione otro por favor.");
        }
        return null;
    }

    private void reporteAgrupado(List<DocumentoPago> listaDoc) {
        Reporteador reporteador = new Reporteador();
        try {
            for (DocumentoPago documentoPago : listaDoc) {
                Map parametros = new HashMap();
                List<DocumentoPago> lista = new ArrayList<DocumentoPago>();
                lista.add(documentoPago);
                String direSol = direccionPersonaFacadeLocal.buscarDireccionPersona(documentoPago.getFkSolCodigo().getSolCodigo());
                if (direSol != null) {
                    parametros.put("direccion", direSol);
                } else {
                    parametros.put("direccion", "");
                }
                String cipCole = documentoPago.getFkSolCodigo().getNumeroCIP();
                if (cipCole != null) {
                    especialidadYcapituloColegiado = colegiadoEspecialidadFacadeLocal.colegiadoEsp(documentoPago.getFkSolCodigo().getSolCodigo());
                    if (especialidadYcapituloColegiado != null) {
                        parametros.put("capituloColegiado", especialidadYcapituloColegiado.getEcaCodigo().getCapCodigo().getCapDescripcion());
                        parametros.put("especialidadPrincipalCole", especialidadYcapituloColegiado.getEcaCodigo().getEspCodigo().getEspDescripcion());
                    }

                }
                reporteador.agregarReporteLote("recibo", lista, parametros);
//                reporteador.exportarReporte("recibo", FormatoExportacion.pdf, lista, parametros);
            }
            reporteador.exportarLote(FormatoExportacion.pdf);
        } catch (Exception e) {
            System.out.println("Error");
        }
    }

    //agregar cobros planillas
    public String agregarCobrosCuotasPlanilla() {
        detCobroPlanilla = new DetCobroPlanilla();
        detCobroPlanilla.setCplCodigo(cobroPlanilla);
        detCobroPlanilla.setDcpEstado(EnumEstadoCobroPlanilla.Vigente);
        SimpleDateFormat sd = new SimpleDateFormat("yyyy");
        detCobroPlanilla.setDcpAnio(Integer.parseInt(sd.format(new Date())));
        return "agregarCobroCuota";
    }

    public String anularCuotaPlanilla() {
        detCobroPlanilla.setDcpEstado(EnumEstadoCobroPlanilla.Anulado);
        delegadoCobroPlanilla.edit(detCobroPlanilla);
        ControladorAbstracto.info("Se anulo satisfactoriamente la cuota a cobrar.");
        return null;
    }

    public String grabarCobrosCuotasPlanilla() {
        if (delegado.listaCobroPlanillaXColegiado(detCobroPlanilla.getCplCodigo().getColegiado().getSolCodigo(), detCobroPlanilla.getMes(), detCobroPlanilla.getDcpAnio(), EnumEstadoCobroPlanilla.Vigente).size() > 0) {
            ControladorAbstracto.info("Existe registrado un cobro por Planilla para este mes sin pagar.");
        } else {
            if (delegado.listaCobroPlanillaXColegiado(detCobroPlanilla.getCplCodigo().getColegiado().getSolCodigo(), detCobroPlanilla.getMes(), detCobroPlanilla.getDcpAnio(), EnumEstadoCobroPlanilla.Pagado).size() > 0) {
                ControladorAbstracto.info("Existe registrado un cobro por Planilla para este mes pagado.");
            } else {
                delegadoCobroPlanilla.create(detCobroPlanilla);
                MovimientoPlanilla movimientoPlanilla = null;
                for (CuotasPorAnio cpa : deudaAnual.getListaCuotasPorAnio()) {
                    for (CuotaMensual cm : cpa.listaEnCuotasMensuales()) {
                        if (cm.isSeleccionado()) {
                            for (MovimientoCuenta mc : cm.getListaMovimientos()) {
                                movimientoPlanilla = new MovimientoPlanilla();
                                movimientoPlanilla.setDcpCodigo(detCobroPlanilla);
                                movimientoPlanilla.setMcuCodigo(mc);
                                delegadoMovimientoPlanilla.create(movimientoPlanilla);
                            }
                        }
                    }
                }
                for (DetPagoAgrupado dpa : deudaCuentaIngresoParaFraccionamiento.getListaDeudaxIngreso()) {
                    if (dpa.isSeleccionado()) {
                        for (MovimientoCuenta mc : dpa.getListaMovimientos()) {
                            movimientoPlanilla = new MovimientoPlanilla();
                            movimientoPlanilla.setDcpCodigo(detCobroPlanilla);
                            movimientoPlanilla.setMcuCodigo(mc);
                            delegadoMovimientoPlanilla.create(movimientoPlanilla);
                        }
                    }
                }

                for (DetPagoAgrupado dpa : deudaCuentaIngresoParaMultas.getListaDeudaxIngreso()) {
                    if (dpa.isSeleccionado()) {
                        for (MovimientoCuenta mc : dpa.getListaMovimientos()) {
                            movimientoPlanilla = new MovimientoPlanilla();
                            movimientoPlanilla.setDcpCodigo(detCobroPlanilla);
                            movimientoPlanilla.setMcuCodigo(mc);
                            delegadoMovimientoPlanilla.create(movimientoPlanilla);
                        }
                    }
                }

                detCobroPlanilla = new DetCobroPlanilla();
                detCobroPlanilla.setCplCodigo(cobroPlanilla);
                detCobroPlanilla.setDcpEstado(EnumEstadoCobroPlanilla.Vigente);
                SimpleDateFormat sd = new SimpleDateFormat("yyyy");
                detCobroPlanilla.setDcpAnio(Integer.parseInt(sd.format(new Date())));

                ControladorAbstracto.info("Se inserto con exito el detalle de cobro planilla.");
            }
        }
        return null;
    }

    public boolean getSeleccionarCuotas() {
        try {
            return !movimientoCuentaFacadeLocal.tieneFraccionamiento(cobroPlanilla.getColegiado().getPersonaNatural().getSolCodigo());
        } catch (Exception e) {
            return true;
        }
    }

    public String seleccionarCuota() {
        Double monto = 0.0;
        EnumMeses[] meses = EnumMeses.values();
        for (CuotasPorAnio cpa : deudaAnual.getListaCuotasPorAnio()) {
            for (CuotaMensual cm : cpa.listaEnCuotasMensuales()) {
                if (cm.isSeleccionado()) {
                    if (detCobroPlanilla.getDcpcuotaIni() == null || detCobroPlanilla.getDcpcuotaIni().isEmpty()) {
                        detCobroPlanilla.setDcpcuotaIni(meses[cm.getMes() - 1].name() + "-" + cm.getAnio());
                    }
                    detCobroPlanilla.setDcpcuotaFin(meses[cm.getMes() - 1].name() + "-" + cm.getAnio());
                    monto += cm.getDeuda();
                }
            }
        }
        for (DetPagoAgrupado dpa : deudaCuentaIngresoParaFraccionamiento.getListaDeudaxIngreso()) {
            if (dpa.isSeleccionado()) {
                if (detCobroPlanilla.getDcpcuotaIni() == null || detCobroPlanilla.getDcpcuotaIni().isEmpty()) {
                    detCobroPlanilla.setDcpcuotaIni(meses[dpa.getMes() - 1].name() + "-" + dpa.getAnio());
                }
                detCobroPlanilla.setDcpcuotaFin(meses[dpa.getMes() - 1].name() + "-" + dpa.getAnio());
                monto += dpa.getValor();
            }
        }
        for (DetPagoAgrupado dpa : deudaCuentaIngresoParaMultas.getListaDeudaxIngreso()) {
            if (dpa.isSeleccionado()) {
                if (detCobroPlanilla.getDcpcuotaIni() == null || detCobroPlanilla.getDcpcuotaIni().isEmpty()) {
                    detCobroPlanilla.setDcpcuotaIni(meses[dpa.getMes() - 1].name() + "-" + dpa.getAnio());
                }
                detCobroPlanilla.setDcpcuotaFin(meses[dpa.getMes() - 1].name() + "-" + dpa.getAnio());
                monto += dpa.getValor();
            }
        }
        detCobroPlanilla.setDcpMonto(monto);
        return null;
    }

    public List<CuotasPorAnio> getMostrarDeudaCuotas() {
        try {
            deudaMovimientoParaCuotas = new DeudaMovimiento();
            deudaMovimientoParaCuotas.setListaMovimientos(movimientoCuentaFacadeLocal.deudaxTipoParaCobroPlanilla(cobroPlanilla.getColegiado().getPersonaNatural(), EnumTipoDeuda.CUOTA_CIP));
            DeudaAnualInterfaz dai = new AdaptadorDeudaMovimientoAnual(deudaMovimientoParaCuotas);
            deudaAnual = new DeudaAnual();
            deudaAnual.setListaCuotasPorAnio(dai.getListaCuotasPorAnio());
            return deudaAnual.getListaCuotasPorAnio();
        } catch (Exception e) {
            return new ArrayList<CuotasPorAnio>();
        }
    }

    public List<DetPagoAgrupado> getMostrarDeudaFraccioanamiento() {
        try {
            deudaMovimientoParaFraccioanamiento = new DeudaMovimiento();
            deudaMovimientoParaFraccioanamiento.setListaMovimientos(movimientoCuentaFacadeLocal.deudaxTipoParaCobroPlanilla(cobroPlanilla.getColegiado().getPersonaNatural(), EnumTipoDeuda.FRACCIONAMIENTO));
            DeudaCuentaIngresoInterfaz dci = new AdaptadorDeudaMovimientoCuentaIngreso(deudaMovimientoParaFraccioanamiento, true);
            deudaCuentaIngresoParaFraccionamiento = new DeudaCuentaIngreso();
            deudaCuentaIngresoParaFraccionamiento.setListaDeudaxIngreso(dci.getListaDeudaxIngreso());

            return deudaCuentaIngresoParaFraccionamiento.getListaDeudaxIngreso();
        } catch (Exception e) {
            return new ArrayList<DetPagoAgrupado>();
        }
    }

    public List<DetPagoAgrupado> getMostrarDeudaMultas() {
        try {
            deudaMovimientoParaMultas = new DeudaMovimiento();
            deudaMovimientoParaMultas.setListaMovimientos(movimientoCuentaFacadeLocal.deudaxTipoParaCobroPlanilla(cobroPlanilla.getColegiado().getPersonaNatural(), EnumTipoDeuda.MULTA));
            DeudaCuentaIngresoInterfaz dci = new AdaptadorDeudaMovimientoCuentaIngreso(deudaMovimientoParaMultas, true);
            deudaCuentaIngresoParaMultas = new DeudaCuentaIngreso();
            deudaCuentaIngresoParaMultas.setListaDeudaxIngreso(dci.getListaDeudaxIngreso());

            return deudaCuentaIngresoParaMultas.getListaDeudaxIngreso();
        } catch (Exception e) {
            return new ArrayList<DetPagoAgrupado>();
        }
    }

    public List<DetCobroPlanilla> getListaDetalleCobroPlanilla() {
        try {
            List<DetCobroPlanilla> lista = delegado.listaDetalleCobroPlanilla(cobroPlanilla);
            cobroPlanilla.setDetCobroPlanillaList(lista);
            return lista;
        } catch (Exception ex) {
            return new ArrayList<DetCobroPlanilla>();
        }
    }

    public SelectItem[] getMesesItems() {
        try {
            SelectItem[] select = new SelectItem[EnumMeses.values().length];
            SelectItem item = null;
            int cont = 0;
            for (EnumMeses mes : EnumMeses.values()) {
                item = new SelectItem(mes, mes.name());
                select[cont++] = item;
            }
            return select;
        } catch (Exception e) {
            SelectItem[] select = new SelectItem[1];
            select[0] = new SelectItem(null, "No existe meses");
            return select;
        }
    }
    //fin cobros planilla

    public List<PersonaJuridica> getListaTodasLasEmpresasConPlanillaColegiados() {
        return delegado.listaTodasEmpresasConPlanillaColegiados();
    }

    /**
     * @return the nombrePersonaJuridica
     */
    public String getNombrePersonaJuridica() {
        return nombrePersonaJuridica;
    }

    /**
     * @param nombrePersonaJuridica the nombrePersonaJuridica to set
     */
    public void setNombrePersonaJuridica(String nombrePersonaJuridica) {
        this.nombrePersonaJuridica = nombrePersonaJuridica;
    }

    /**
     * @return the cobroPlanilla
     */
    public CobroPlanilla getCobroPlanilla() {
        return cobroPlanilla;
    }

    /**
     * @param cobroPlanilla the cobroPlanilla to set
     */
    public void setCobroPlanilla(CobroPlanilla cobroPlanilla) {
        this.cobroPlanilla = cobroPlanilla;
    }

    /**
     * @return the personaJuridica
     */
    public PersonaJuridica getPersonaJuridica() {
        return personaJuridica;
    }

    /**
     * @param personaJuridica the personaJuridica to set
     */
    public void setPersonaJuridica(PersonaJuridica personaJuridica) {
        this.personaJuridica = personaJuridica;
    }

    /**
     * @return the listaCobroPlanillas
     */
    public List<CobroPlanilla> getListaCobroPlanillas() {
        return listaCobroPlanillas;
    }

    public List<CobroPlanilla> getListaTodosColegiadosProvisionales() {
        return listaTodosLosColegiados;
    }

    /**
     * @param listaCobroPlanillas the listaCobroPlanillas to set
     */
    public void setListaCobroPlanillas(List<CobroPlanilla> listaCobroPlanillas) {
        this.listaCobroPlanillas = listaCobroPlanillas;
    }

    /**
     * @return the tipoBusqueda
     */
    public int getTipoBusqueda() {
        return tipoBusqueda;
    }

    /**
     * @param tipoBusqueda the tipoBusqueda to set
     */
    public void setTipoBusqueda(int tipoBusqueda) {
        this.tipoBusqueda = tipoBusqueda;
    }

    /**
     * @return the dniOCip
     */
    public String getDniOCip() {
        return dniOCip;
    }

    /**
     * @param dniOCip the dniOCip to set
     */
    public void setDniOCip(String dniOCip) {
        this.dniOCip = dniOCip;
    }

    /**
     * @return the codigoUsaEmpresa
     */
    public String getCodigoUsaEmpresa() {
        return codigoUsaEmpresa;
    }

    /**
     * @param codigoUsaEmpresa the codigoUsaEmpresa to set
     */
    public void setCodigoUsaEmpresa(String codigoUsaEmpresa) {
        this.codigoUsaEmpresa = codigoUsaEmpresa;
    }

    /**
     * @return the descripcionUsaEmpresa
     */
    public String getDescripcionUsaEmpresa() {
        return descripcionUsaEmpresa;
    }

    /**
     * @param descripcionUsaEmpresa the descripcionUsaEmpresa to set
     */
    public void setDescripcionUsaEmpresa(String descripcionUsaEmpresa) {
        this.descripcionUsaEmpresa = descripcionUsaEmpresa;
    }

    /**
     * @return the detCobroPlanilla
     */
    public DetCobroPlanilla getDetCobroPlanilla() {
        return detCobroPlanilla;
    }

    /**
     * @param detCobroPlanilla the detCobroPlanilla to set
     */
    public void setDetCobroPlanilla(DetCobroPlanilla detCobroPlanilla) {
        this.detCobroPlanilla = detCobroPlanilla;
    }

    /**
     * @return the anioPago
     */
    public int getAnioPago() {
        return anioPago;
    }

    /**
     * @param anioPago the anioPago to set
     */
    public void setAnioPago(int anioPago) {
        this.anioPago = anioPago;
    }

    /**
     * @return the mesPago
     */
    public EnumMeses getMesPago() {
        return mesPago;
    }

    /**
     * @param mesPago the mesPago to set
     */
    public void setMesPago(EnumMeses mesPago) {
        this.mesPago = mesPago;
    }
}
